iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 25
2
Modern Web

JavaScript 之旅系列 第 25

JavaScript 之旅 (25):Nullish Coalescing Operator ( ?? 運算子)

  • 分享至 

  • xImage
  •  

本篇介紹 ES2020 (ES11) 提供的 Nullish Coalescing Operator ( ?? 運算子)。

過去的 || 運算子

如果某個值為 nullundefined 時,會希望為它設定一個預設值,常見的作法是使用 || 運算子 (邏輯 OR 運算子)。例如:

let user = {
  name: 'Titan',
  age: null,
  description: '',
  isVerify: false,
  loginCount: 0
};

console.log(user.age || 18);
// 18
console.log(user.undefinedValue || 'default');
// default

若是某些值剛好是 falsy 值,這可能會不符合你的預期,因為那些 falsy 對你來說是需要的值,但 || 運算子會因 falsy 值而使用預設值:

let user = {
  name: 'Titan',
  age: null,
  description: '',
  isVerify: false,
  loginCount: 0
};

console.log(user.description || 'Hello World');
// "Hello World"
console.log(user.isVerify || true);
// true
console.log(user.loginCount || 666);
// 666

如果你只想讓 nullundefined 的值設定預設值,那 || 運算子不太適用!

這就是本篇介紹的 Nullish Coalescing Operator ( ?? 運算子) 派上用場的時刻!

現代的 ?? 運算子

你可以把 ?? 運算子想成是高配版的 || (我知道這樣講不準確 XD),?? 運匴子只能將 nullundefined 的值設定預設值。

用前面的例子來舉例:

let user = {
  name: 'Titan',
  age: null,
  description: '',
  isVerify: false,
  loginCount: 0
};

console.log(user.age ?? 18);
// 18
console.log(user.undefinedValue ?? 'default');
// default
console.log(user.description ?? 'Hello World');
// ""
console.log(user.isVerify ?? true);
// false
console.log(user.loginCount ?? 666);
// 0

資料來源


上一篇
JavaScript 之旅 (24):Optional Chaining Operator ( ?. 運算子)
下一篇
JavaScript 之旅 (26):String.prototype.replaceAll()
系列文
JavaScript 之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言